package com.itcast.admin.controller;

import com.itcast.common.annotation.IgnoreToken;
import com.itcast.common.model.dto.request.CheckItemAddReqDTO;
import com.itcast.common.model.dto.request.CheckItemGroupReqDTO;
import com.itcast.common.model.dto.request.CheckItemReqDTO;
import com.itcast.common.model.dto.response.CheckItemGroupResDTO;
import com.itcast.common.model.dto.response.CheckItemResDTO;
import com.itcast.security.model.Checkitem;
import com.itcast.security.service.ICheckItemService;
import com.jzo2o.common.model.PageResult;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequiredArgsConstructor
@RequestMapping("/admin/check-item")
@ApiModel("检查项")
public class CheckItemController {

    private final ICheckItemService checkItemService;
    /**
     * 分页查询
     */
    //没问题
    @GetMapping("/pageQuery")
    @ApiOperation("体检组分页查询")
    @IgnoreToken
    public PageResult<CheckItemResDTO> page(CheckItemReqDTO checkItemReqDTO) {
        PageResult<CheckItemResDTO> list = checkItemService.queryItemList(checkItemReqDTO);
        return list;
    }

    /**
     * 新增检查项
     */
    //没问题
    @PostMapping
    @ApiOperation("新增检查项")
    public Checkitem add(@RequestBody  CheckItemAddReqDTO checkItemAddReqDTO) {
        Checkitem checkitem = checkItemService.addCheck(checkItemAddReqDTO);
        return checkitem;
    }

    /**
     * 根据id查询检查项
     */
    //todo 有问题 --没有体检组
    @GetMapping("/{id}")
    @ApiOperation("根据id查询检查项")
    @IgnoreToken
    public CheckItemResDTO getByIdCheCk(@PathVariable Long id) {
        CheckItemResDTO checkitem = checkItemService.getByIdCheCk(id);
        return checkitem;
    }

    /**
     * 启用检查项
     */
    //没问题
    @PutMapping("/enable/{id}")
    @ApiOperation("启用检查项")
    @IgnoreToken
    public Checkitem enable(@PathVariable Long id) {
        Checkitem checkitem =checkItemService.enable(id);
        return checkitem;
    }

    /**
     * 禁用体检项
     */
    //todo 有问题
    @GetMapping("/checkDisable/{id}")
    @ApiOperation("检擦检查项")
    @IgnoreToken
    public Checkitem checkDisable(@PathVariable Long id) {
        Checkitem checkitem = checkItemService.checkDisable(id);
        return checkitem;
    }

    /**
     * 删除体检项
     */
    //没问题
    @DeleteMapping("/{id}")
    @ApiOperation("删除检查项")
    @IgnoreToken
    public Checkitem delete(@PathVariable Long id) {
        Checkitem checkitem =checkItemService.removeCheck(id);
        return checkitem;
    }

    /**
     * 更新检查项
     */
    @PutMapping("/{id}")
    @ApiOperation("更新检查项")
    @IgnoreToken
    //todo 有问题
    public Checkitem update(@PathVariable Long id, @RequestBody @Validated CheckItemAddReqDTO checkItemAddReqDTO) {
        Checkitem checkitem = checkItemService.updateCheckGroup(id, checkItemAddReqDTO);
        return checkitem;
    }

    /**
     * 查询启用状态下的检查组个检查项
     */
    @GetMapping("/queryEnabledGroupAndItem")
    public List<CheckItemGroupResDTO> queryCheckItemGroup(CheckItemGroupReqDTO checkItemGroupReqDTO) {
        List<CheckItemGroupResDTO> list = checkItemService.queryCheckItemGroup(checkItemGroupReqDTO);
        return list;
    }

}
